/* Moderator	: helpbygrace ( helpbygrace_AT_gmail.com ) */
/*******************************************************************************
  processor 기본 자료를 담고 그 자료를 어떻게 처리하는지에 관해 정의, 구현됨
*******************************************************************************/
#include <stdio.h>
#include <stdlib.h>

#include "proc.h"


/* proc_t 초기화.
     기본적으로 proc_t 는 한번도 allocate 된적이 없다고 가정합니다.
     기존의 것을 다시 사용하려면 fini_proc를 호출하여 모든 할당된
     영역을 해제한 후 init_proc를 호출합니다.
*/
int init_proc (proc_t *proc)
{
  proc->gpr	= (reg_t *)calloc(GPR_SIZE,sizeof(reg_t));
  proc->spr	= (reg_t *)calloc(SPR_SIZE,sizeof(reg_t));
  proc->dbg	= (reg_t *)calloc(DBG_SIZE,sizeof(reg_t));
  proc->control	= proc_control_none;
  proc->event	= proc_event_none;
  proc->br_pc	= 0;

  proc->c_insn	= 0;
  proc->c_cycle	= 0;
  proc->c_mem	= 0;

  return SUCCESS;
}

int fini_proc (proc_t *proc)
{
  free(proc->gpr);
  free(proc->spr);
  free(proc->dbg);
  return SUCCESS;
}
void
event	(proc_t		*proc,
	 proc_event_t	e )
{
  proc->event	= e;
}

